

import threading
import time

def run(n):
    print('task', n)
    time.sleep(2)
    print('task done', n)
# t1 = threading.Thread(target=run, args=('t1',))
# t2 = threading.Thread(target=run, args=('t2',))
# t1.start()
# t2.start()

#使用循环启动多个线程,所有线程启动后，等待所有线程结束，打印结果
start_time = time.time()
t_objs = []
for i in range(2):
    t = threading.Thread(target=run, args=('t-%s' % i,))
    # t.setDaemon(True)   #设置线程为守护线程
    t.start()
    t_objs.append(t)
    print('t_objs', t_objs)    #为了不阻塞后面线程启动，不在这里join，先放到一个列表里面

for t in t_objs:    #循环线程实例列表，等待所有线程执行完毕
    t.join()

print(time.time() - start_time)